home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / Framewrk / FWPart / FWProxy.h < prev    next >
Encoding:
Text File  |  1996-09-17  |  11.2 KB  |  342 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWProxy.h
  4. //    Release Version:    $ ODF 2 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #ifndef FWPROXY_H
  11. #define FWPROXY_H
  12.  
  13. // ----- ODF OS Includes -----
  14.  
  15. #ifndef FWFXMATH_H
  16. #include "FWFxMath.h"
  17. #endif
  18.  
  19. // ----- ODF Foundation Includes -----
  20.  
  21. #ifndef FWSTDEF_H
  22. #include "FWStdDef.h"
  23. #endif
  24.  
  25. #ifndef FWCLAINF_H
  26. #include "FWClaInf.h"
  27. #endif
  28.  
  29. #ifndef FWPRIDEB_H
  30. #include "FWPriDeb.h"
  31. #endif
  32.  
  33. #ifndef FWTCOLL_H
  34. #include "FWTColl.h"
  35. #endif
  36.  
  37. //========================================================================================
  38. //    Forward Declarations
  39. //========================================================================================
  40.  
  41. class ODFrame;
  42. class ODShape;
  43. class ODFacet;
  44. class ODStorageUnitView;
  45. class ODTransform;
  46. class ODCanvas;
  47.  
  48. class FW_CCloneInfo;
  49. class FW_CFrame;
  50. class FW_CEmbeddingFrame;
  51. class FW_CPresentation;
  52. class FW_CEmbeddingPart;
  53. class FW_CProxyFrame;
  54. class FW_CPoint;
  55. class FW_CString;
  56.  
  57. //========================================================================================
  58. //    class FW_MProxy
  59. //========================================================================================
  60.  
  61. class FW_MProxy
  62. {
  63.  public:
  64.     friend class FW_CProxyProxyFrameIterator;
  65.     
  66. //----------------------------------------------------------------------------------------
  67. //    Initialization/Destruction
  68. //
  69. public:
  70.     FW_MProxy(Environment* ev, 
  71.                 FW_CEmbeddingPart* embeddingPart, 
  72.                 FW_Boolean shown = TRUE);
  73.     virtual ~FW_MProxy();
  74.     
  75. //----------------------------------------------------------------------------------------
  76. //    New API
  77. //
  78. public:
  79.     // ----- Embedded frames manipulation -----
  80.     void                        DetachEmbeddedFrames(Environment *ev);
  81.     void                        AttachEmbeddedFrames(Environment *ev);
  82.     FW_Boolean                    IsDetached(Environment *ev) const;
  83.     
  84.     void                        RemoveEmbeddedFrames(Environment *ev);
  85.  
  86.     // ----- Embedding -----
  87.     void                         Embed(Environment *ev, 
  88.                                     FW_CPresentation* embeddingPresentation,
  89.                                     ODPart *embeddedPart,
  90.                                     ODFrame* odEmbeddedFrame,        // Might be null
  91.                                     ODType suggestedFrameType,        //    preferred frame type
  92.                                     ODShape* frameShape,
  93.                                     ODTypeToken viewType,
  94.                                     ODTypeToken presentationType,
  95.                                     ODID frameGroupID,
  96.                                     FW_Boolean isOverlaid,
  97.                                     FW_Boolean subFrame);
  98.  
  99.     virtual short                CreateFacets(Environment* ev,
  100.                                     FW_CEmbeddingFrame* embeddingFrame,
  101.                                     ODFacet* embeddingFacet,
  102.                                     ODFrame* embeddedFrame,
  103.                                     ODShape* proposedClipShape) = 0;
  104.                                     
  105.     
  106.     ODFacet*                    CreateFacet(Environment* ev,
  107.                                     ODFacet*        containingFacet,
  108.                                     ODFrame*        embeddedFrame,
  109.                                     ODShape*        clipShape,
  110.                                     ODTransform*    externalTransform,
  111.                                     ODCanvas*        canvas,
  112.                                     ODCanvas*        biasCanvas,
  113.                                     ODFacet*        siblingFacet,
  114.                                     ODFramePosition    position);        // Must be used instead of ODFacet::CreateEmbeddedFacet
  115.     
  116.     virtual FW_Boolean             NeedFacets(Environment *ev, FW_CEmbeddingFrame* embeddingFrame) const;
  117.     
  118.     // ----- Notification -----
  119.     virtual void                UsedShapeChanged(Environment *ev,
  120.                                                 FW_CEmbeddingFrame* embeddingFrame,
  121.                                                 ODFrame* odEmbeddedFrame);
  122.  
  123.     virtual ODShape*             FrameShapeRequested(Environment* ev, 
  124.                                                 FW_CEmbeddingFrame* frame,
  125.                                                 ODFrame* odEmbeddedFrame, 
  126.                                                 ODShape* requestedFrameShape);
  127.                                         
  128.     // ----- Query -----
  129.     ODFacet*                    GetEmbeddedFacetUnderMouse(Environment* ev, 
  130.                                     ODFacet* embeddingFacet, 
  131.                                     const FW_CPoint& mouse) const;    
  132.                                     
  133.     ODFrame*                    AcquireEmbeddedFrame(Environment* ev, 
  134.                                     FW_CEmbeddingFrame* embeddingFrame,
  135.                                     FW_Boolean instantiate = TRUE) const;
  136.                                     
  137.     FW_CProxyFrame*                GetProxyFrame(Environment* ev, 
  138.                                     FW_CEmbeddingFrame* embeddingFrame) const;
  139.     FW_CProxyFrame*                GetProxyFrame(Environment* ev, 
  140.                                     ODID embeddedFrameID) const;
  141.     
  142.     FW_Boolean                    IsEmbeddedFrame(Environment* ev,
  143.                                     ODFrame* odEmbeddedFrame) const;
  144.                                     
  145.     // ----- Active border -----
  146.     virtual void                AdjustBorderShape(Environment* ev,
  147.                                     FW_CEmbeddingFrame* embeddingFrame, 
  148.                                     ODFacet* embeddedFacet, 
  149.                                     ODShape *shape);
  150.                                     
  151.     // ----- Persistence -----
  152.     virtual void                Externalize(Environment* ev, 
  153.                                     ODStorageUnitView* destinationSUView,
  154.                                     FW_CCloneInfo *cloneInfo);
  155.     virtual void                Internalize(Environment* ev, 
  156.                                     ODStorageUnitView* sourceSUView,
  157.                                     FW_CCloneInfo *cloneInfo);
  158.                                                                           
  159.     // ----- Selection state -----
  160.     virtual void                SetSelectState(Environment* ev,
  161.                                     FW_Boolean state);
  162.     FW_Boolean                    GetSelectState(Environment* ev) const;
  163.     
  164.     // ----- Reveal -----
  165.     virtual FW_Boolean             Reveal(Environment *ev, 
  166.                                     FW_CEmbeddingFrame* embeddingFrame,
  167.                                     ODFrame* embeddedFrame, 
  168.                                     ODShape* revealShape);
  169.  
  170.     // ----- Notification -----
  171.     virtual void                ProxyFrameAdded(Environment* ev, FW_CProxyFrame* proxyFrame);
  172.     virtual void                ProxyFrameRemoved(Environment* ev, FW_CProxyFrame* proxyFrame);
  173.                             
  174.     // ----- Highlight state -----
  175.     void                        ChangeHighlight(Environment* ev,
  176.                                     ODHighlight highlight,
  177.                                     FW_CEmbeddingFrame* embeddingFrame = NULL);
  178.                                     
  179.     // ----- Hide/Show Proxy -----
  180.     void                        HideShow(Environment* ev, FW_Boolean shown);
  181.     FW_Boolean                    IsShown(Environment* ev) const;
  182.     
  183.     // ----- Open In Window (From OpenSelection Command) -----
  184.     virtual void                OpenInWindow(Environment* ev, FW_CProxyFrame* proxyFrame);
  185.         
  186.     // ----- Position all embedded frames of this proxy -----
  187.     void                         ChangeExternalTransforms(Environment* ev, 
  188.                                     ODTransform* transform);
  189.     void                         ChangeExternalTransforms(Environment* ev, 
  190.                                     FW_Fixed x,
  191.                                     FW_Fixed y);
  192.  
  193.     // ----- Change the frame shape of all embedded frames of this proxy -----
  194.     void                         ChangeFrameShapes(Environment* ev, 
  195.                                     ODShape* newShape);
  196.     void                         ChangeFrameShapes(Environment* ev, 
  197.                                     FW_Fixed width,
  198.                                     FW_Fixed height);
  199.  
  200.     // ----- Set the View Type of this proxy frames -----
  201.     void                        ChangeEmbeddedFramesViewType(Environment *ev, 
  202.                                     ODTypeToken viewType);
  203.  
  204.     // ----- Frame Group/Sequence Number -----
  205.     ODID                        GetFrameGroup(Environment *ev) const;
  206.     ODID                        GetSequenceNumber(Environment *ev) const;
  207.     void                        ChangeSequenceNumber(Environment *ev, ODID sequenceNumber);
  208.     
  209.     // ----- Getters/Setters -----
  210.     ODPart*                        AcquireEmbeddedPart(Environment* ev, FW_Boolean instantiate = TRUE) const;
  211.     void                        GetEmbeddedPartName(Environment* ev, FW_CString& string) const;
  212.     
  213.     FW_CEmbeddingPart*            GetPart(Environment* ev) const;    
  214.                                 
  215.     // ----- Change the link status of all embedded frames of this proxy -----
  216.     void                        ChangeLinkStatus(Environment* ev, ODLinkStatus linkStatus);
  217.  
  218.     // ----- ReleaseAll -----
  219.     virtual void                ReleaseAll(Environment *ev);
  220.     
  221.     // ----- Purge -----
  222.     virtual ODSize                Purge(Environment* ev);
  223.     void                        SetPurgeable(Environment* ev, 
  224.                                     FW_CEmbeddingFrame* embeddingFrame, 
  225.                                     FW_Boolean purgeable);
  226.     
  227. //----------------------------------------------------------------------------------------
  228. //    Implementation API
  229. //
  230. public:
  231.     // ----- ProxyFrame Factories -----
  232.     FW_CProxyFrame*                PrivNewProxyFrame(Environment* ev, 
  233.                                                 FW_CEmbeddingPart* part,
  234.                                                 ODStorageUnitView* suView);
  235.     FW_CProxyFrame*                PrivNewProxyFrame(Environment* ev, 
  236.                                                 FW_CEmbeddingPart* part, 
  237.                                                 FW_CEmbeddingFrame* containingFrame, 
  238.                                                 ODFrame* embeddedFrame,
  239.                                                 FW_Boolean saveLimboState);
  240.     
  241.     void                        PrivAddProxyFrame(Environment* ev, FW_CProxyFrame* proxyFrame);
  242.     void                        PrivDeleteProxyFrame(Environment* ev, FW_CProxyFrame* proxyFrame);
  243.  
  244.     FW_CProxyFrame*                PrivContainerIDToProxyFrame(Environment* ev, ODStorageUnitID containerID) const;
  245.     
  246.     void                        PrivPostClone(Environment* ev,
  247.                                     FW_CCloneInfo* cloneInfo);
  248.     
  249.     void                        PrivEmbeddedFacetRemoved(Environment* ev);
  250.     unsigned short                PrivGetEmbeddedFacetCount(Environment* ev) const;
  251.  
  252.     void                        PrivSetFrameGroup(Environment *ev, ODID frameGroup);
  253.  
  254. //----------------------------------------------------------------------------------------
  255. //    Data Members
  256. //----------------------------------------------------------------------------------------
  257.  
  258. private:
  259.     FW_Boolean                                fDetached;
  260.     FW_TOrderedCollection<FW_CProxyFrame>*    fProxyFrames;
  261.     FW_CEmbeddingPart*                        fPart;
  262.     FW_Boolean                                fSelected;
  263.     ODStorageUnitID                            fClonedFrameID;        // Used during cloning
  264.     unsigned short                            fEmbeddedFacetCount;
  265.     FW_Boolean                                fShown;
  266.     ODID                                    fFrameGroup;
  267.     ODID                                    fSequenceNumber;
  268. };
  269.  
  270.  
  271. //========================================================================================
  272. //    FW_MProxy Inlines
  273. //========================================================================================
  274.  
  275. //----------------------------------------------------------------------------------------
  276. //    FW_MProxy::GetPart
  277. //----------------------------------------------------------------------------------------
  278. inline FW_CEmbeddingPart* FW_MProxy::GetPart(Environment*) const
  279. {
  280.     return fPart;
  281. }
  282.  
  283. //----------------------------------------------------------------------------------------
  284. //    FW_MProxy::GetSelectState
  285. //----------------------------------------------------------------------------------------
  286. inline FW_Boolean FW_MProxy::GetSelectState(Environment*) const
  287. {
  288.     return fSelected;
  289. }
  290.  
  291. //----------------------------------------------------------------------------------------
  292. //    FW_MProxy::PrivGetEmbeddedFacetCount
  293. //----------------------------------------------------------------------------------------
  294. inline unsigned short FW_MProxy::PrivGetEmbeddedFacetCount(Environment*) const
  295. {
  296.     return fEmbeddedFacetCount;
  297. }
  298.  
  299. //----------------------------------------------------------------------------------------
  300. //    FW_MProxy::PrivEmbeddedFacetRemoved
  301. //----------------------------------------------------------------------------------------
  302. inline void FW_MProxy::PrivEmbeddedFacetRemoved(Environment*)
  303. {
  304.     FW_ASSERT(fEmbeddedFacetCount != 0);
  305.     fEmbeddedFacetCount--;
  306. }
  307.  
  308. //----------------------------------------------------------------------------------------
  309. //    FW_MProxy::GetFrameGroup
  310. //----------------------------------------------------------------------------------------
  311. inline ODID FW_MProxy::GetFrameGroup(Environment*) const
  312. {
  313.     return fFrameGroup;
  314. }
  315.  
  316. //----------------------------------------------------------------------------------------
  317. //    FW_MProxy::GetSequenceNumber
  318. //----------------------------------------------------------------------------------------
  319. inline ODID FW_MProxy::GetSequenceNumber(Environment*) const
  320. {
  321.     return fSequenceNumber;
  322. }
  323.  
  324. //----------------------------------------------------------------------------------------
  325. //    FW_MProxy::IsShown
  326. //----------------------------------------------------------------------------------------
  327. inline FW_Boolean FW_MProxy::IsShown(Environment*) const
  328. {
  329.     return fShown;
  330. }
  331.  
  332. //----------------------------------------------------------------------------------------
  333. //    FW_MProxy::IsDetached
  334. //----------------------------------------------------------------------------------------
  335. inline FW_Boolean FW_MProxy::IsDetached(Environment*) const
  336. {
  337.     return fDetached;
  338. }
  339.  
  340. #endif
  341.  
  342.